package com.zc.im.common.constant.enums;

import com.zc.im.common.msg.*;

import java.util.HashMap;
import java.util.Map;

/**
 * Project：im
 * Date：2022/5/10
 * Time：10:47
 * Description：枚举对应类型上下文
 *
 * @author Challen.Zhang
 * @version 1.0
 */
public class MsgTypeEnumContext {

    private final static Map<Byte, Class<? extends Msg>> CACHE_MAP = new HashMap<>();

    static {
        CACHE_MAP.put(MsgTypeEnum.CHAT.getValue(), ChatMsg.class);
        CACHE_MAP.put(MsgTypeEnum.SYSTEM.getValue(), SystemMsg.class);
        CACHE_MAP.put(MsgTypeEnum.ACK.getValue(), AckMsg.class);
        CACHE_MAP.put(MsgTypeEnum.HEART_BEAT.getValue(), HeartBeatMsg.class);

    }

    public static Class<? extends Msg> getClazz(MsgTypeEnum msgTypeEnum) {
        return CACHE_MAP.get(msgTypeEnum.getValue());
    }

    public static Class<? extends Msg> getClazz(byte b) {
        return CACHE_MAP.get(b);
    }

}
